<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
            const person = {
                name: "wangqing",
                love: "java"
            }

            // 获取当前对象中所有属性
            Object.keys(person)
            // 获取当前对象所有属性的值
            Object.values(person)
            // 获取当前对象所有键值对 
            Object.entries(person)

            // assign 用于对象的合并
            const target = {a : 1};
            const source1 = {b : 2};
            const source2 = {c : 3};
            Object.assign(target, source1, source2);
            console.log(target);

            // 声明对象的简写方式
            const age = 20;
            const name = "wangqing"
            const person2 = { age, name}
            console.log(person2)

            // 对象函数的简写
            let person3 = {
                name : "wanqing",

                like: function(love){
                    console.log( this.name + " love" + love );
                },

                // 注意，箭头函数 this 不能获取到，要使用对象名.属性名
                like2: love => {
                    console.log( this.name + " love" + love );
                } ,
                // 简写写法 3
                like3(love){
                    console.log( this.name + " love" + love );
                }
            }

            person3.like("打代码");
            person3.like2("打代码")
            person3.like3("打代码")

            // 对象的扩展运算符

            // 1. 拷贝对象 深拷贝
            let p1 = {name: "wanqing" , age : 20}
            let someone = {...p1} // 将 p1 中的内容拷贝给 someone

            console.log(someone)


            // 2. 合并对象
            let age1 = {age : 20};
            let name2 = {name: "wanqing"}
            let p2 = {...age1, ...name2}
            console.log(p2); // 若是 p2 中之前已经含有 age 和 name 的值，使用新值覆盖原来的值


    </script>
</body>
</html>